<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var s = new Set();
        var arr = [1, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10];
        arr.forEach(x => s.add(x))

        console.log("s:\t", s);

        // 在创建时就可以添加元素
        var s2 = new Set([10, 20, 30]);
        console.log("s2:\t", s2);

        // 将集合变为数组
        var s3 = new Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
        // 使用扩展运算符 ... 将集合变为 array
        var arr2 = [...s3];
        console.log("s3:\t", s3);
        console.log("arr2:\t", arr2);

        // 接收字符串
        var s4 = new Set("hello");
        console.log("s4:\t", s4);
        // 为什么只有 hell 而不是 hello 呢？
        // 因为 Set 中不能有重复元素，所以 l 被过滤掉了

        // size 属性，返回集合中元素的数量
        var s5 = new Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
        console.log("s5.size:\t", s5.size);

        // set 方法
        console.log("set 方法");
        // add 方法，添加元素
        var s6 = new Set();
        s6.add(1);
        s6.add(2);
        s6.add(3);
        console.log("s6:\t", s6);
        // delete 方法，删除元素
        var s7 = new Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
        s7.delete(1);  // 删除 1 而不是下标 1 的元素
        s7.delete(11); // 删除 11，但是 11 不存在，所以不会删除
        console.log("s7:\t", s7);

        // has 方法，判断元素是否存在
        var s8 = new Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
        console.log("s8.has(1):\t", s8.has(1));
        console.log("s8.has(11):\t", s8.has(11));

        // clear 方法，清空集合
        var s9 = new Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
        s9.clear();
        console.log("s9:\t", s9);
    </script>
</body>

</html>